package unsafeCollection;

import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * @program: javase
 * @description:
 * @author: lld
 * @create: 2021-04-17 22:23
 **/
public class ListDemo {
    public static void main(String[] args) {
//直接使用，出现java.util.ConcurrentModificationException
//        List<String> list = new ArrayList<>();
//        首先加锁保证只有一个线程进入，
//        先复制一份，再写入，避免写入覆盖
//        读写分离，保证get()方法得到最大的性能
//        获取方法在获取到集合后，都不会受到其他线程添加元素的影响

//        List<String> list = new CopyOnWriteArrayList<>();
        HashSet<String> list = new HashSet<>();
        for (int i = 0; i < 500; i++) {
            new Thread(() -> {
                list.add(UUID.randomUUID().toString().substring(0, 5));
                list.add(UUID.randomUUID().toString().substring(3, 8));
                System.out.println(list);
//                System.out.println(list);
            }, String.valueOf(i)).start();
        }
    }
}
